<template>
  <!-- 此组件没有可见内容，仅用于在后台预加载权限 -->
  <div class="hidden"></div>
</template>

<script>
export default {
  name: 'PermissionPreloader',
  data() {
    return {
      hasCameraPermission: false,
      permissionRequestInProgress: false
    };
  },
  mounted() {
    // 页面加载后延迟一段时间再请求权限，避免影响页面加载性能
    setTimeout(() => {
      this.preloadCameraPermission();
    }, 1000);
  },
  methods: {
    async preloadCameraPermission() {
      // 如果已经请求过权限或正在请求中，则不再重复请求
      if (this.hasCameraPermission || this.permissionRequestInProgress) {
        return;
      }
      
      this.permissionRequestInProgress = true;
      
      try {
        // 尝试访问摄像头权限，但不实际使用摄像头
        // 使用一个非常低的分辨率来减少对设备资源的占用
        const stream = await navigator.mediaDevices.getUserMedia({
          video: {
            width: { ideal: 16 },
            height: { ideal: 16 }
          }
        });
        
        // 立即停止流，我们只需要权限
        stream.getTracks().forEach(track => track.stop());
        
        this.hasCameraPermission = true;
        console.log('摄像头权限已提前获取');
      } catch (error) {
        // 权限被拒绝或不可用
        console.log('摄像头权限请求结果:', error.name);
        // 不显示错误，因为这是后台预加载
      } finally {
        this.permissionRequestInProgress = false;
      }
    },
    
    // 提供一个方法供其他组件检查权限状态
    checkCameraPermissionStatus() {
      return this.hasCameraPermission;
    }
  }
};
</script>

<style scoped>
.hidden {
  display: none;
}
</style>